/**
 * File: main.c
 *
 * Integrantes:
 * @author	Jormar Arellano		(05-37840)	<jormar.arellano@gmail.com>
 * @author	Sabrina Fernández	(05-38163)	<sabrinamfm@gmail.com>
 */

#include "util.h"
#include "graph.h"
#include "LocalSearch.h"
#include "ILS.h"

#include <stdio.h>
#include <stdlib.h>
#include <sys/time.h>

int main(int argc, char** argv) {
    struct timeval start;
    struct timeval end;
    struct timeval result;
    Graph *graph = NULL;

    // Inicializamos todas las variables globales.
    defaults();

	// Se validan los argumentos.
	if (validarArgs(argc, argv) == 0) {
		printf("Error en los argumentos\n");
	}

    // Cargamos el problema.
    graph = parser_graph(graphFile);

    // Resolvemos el problema.
    gettimeofday(&start, NULL);
    graph = metaheuristic(graph);
    gettimeofday(&end, NULL);

    if(isFeasibleSolution(graph))
        printf("\nSe encontro una coloracion factible\n");
    else
        printf("\nNo se encontro una colocarion factible\n");

    // Estdisticas del programa
    timersub(&end, &start, &result);

    printf("Colores: %d\nTiempo: %f seg\n\n", getTotalColor(graph), result.tv_sec + (float)result.tv_usec/1000000.0);
	
    // Liberamos los recursos usados
    freeGraph(graph);

    return 0;
}
